package com.cnfangmao.masterdata.service;

import java.util.List;
import java.util.Map;

import com.cnfangmao.masterdata.common._enum.IsSelectFieldEnum;
import com.cnfangmao.masterdata.common._enum.OrderByEnum;
import com.cnfangmao.masterdata.dto.PageDto;
import com.cnfangmao.masterdata.vo.MasterDataListPageVo;

/**    
 * @description: 定义基本主数据管理器   
 * @author:	chenxc   
 * @date:   2020年4月22日 上午11:10:27   
 */
public interface MasterDataManagerService {

	/**
	 * @description: 查询指定元主数据元数据Id的主数据 
	 * @author: chenxc
	 * @date: 2020年4月22日 上午11:29:47
	 * @param metadataId
	 * @param userId
	 * @param filterColumnMap
	 *         key的书写约定：
	 *         __like_{字段名}：模糊查询
	 *         __gt_{字段名}：大于查询
	 *         __gte_{字段名}：大于等于查询
	 *         __lt_{字段名}：大小查询
	 *         __lte_{字段名}：大小等于查询
	 *         __is_{字段名}：等于查询
	 * @param selectColumnMap
	 *          key:字段名，value：IsSelectFieldEnum 枚举值
	 * @param orderColumnMap
	 * 			key:字段名，value：OrderByEnum 枚举值
	 * @return      
	 * Map<String,Object>      
	 * @throws
	 */
	public List<Map<String, Object>> find(String metadataId, String userId, Map<String, Object> filterColumnMap, Map<String, IsSelectFieldEnum> selectColumnMap, Map<String, OrderByEnum> orderColumnMap);
	
	/**
	 * 
	 * @description: 分页查询指定元主数据元数据Id的主数据  
	 * @author: chenxc
	 * @date: 2020年4月22日 下午3:25:18
	 * @param metadataId
	 * @param userId
	 * @param page
	 * @param filterColumnMap
	 *         key的书写约定：
	 *         __like_{字段名}：模糊查询
	 *         __gt_{字段名}：大于查询
	 *         __gte_{字段名}：大于等于查询
	 *         __lt_{字段名}：大小查询
	 *         __lte_{字段名}：大小等于查询
	 *         __is_{字段名}：等于查询
	 *         value：具体filter的值
	 * @param selectColumnMap
	 *          key:字段名，value：IsSelectFieldEnum 枚举值
	 * @param orderColumnMap
	 *          key:字段名，value：OrderByEnum 枚举值
	 * @return      
	 * @return: MasterDataListVo      
	 * @throws
	 */
	public MasterDataListPageVo findPage(String metadataId, String userId, PageDto page, Map<String, Object> filterColumnMap, Map<String, IsSelectFieldEnum> selectColumnMap, Map<String, OrderByEnum> orderColumnMap);
	
	/**
	 * @description: 按主数据id查询对应的主数据详细  
	 * @author: chenxc
	 * @date: 2020年4月22日 上午11:34:46
	 * @param: @param metadataId
	 * @param: @param userId
	 * @param: @param masterDataId
	 * @param: @return      
	 * @return: Map<String,Object>      
	 * @throws
	 */
	public Map<String, Object> findOne(String metadataId, String userId, String masterDataId);
}
